from sqlalchemy import Column, Date, DateTime, Integer, String, text
from models.game import GameGame
from app import db
import datetime

class PaymentPay(db.Model):
    """
    字段说明:
    pay_company_id: 支付方公司ID
    pay_channel_id: 支付方支付通道ID
    game_id: 游戏ID, 充值V币game_id为0
    server_id: 充值的游戏服务器ID
    game_role_name: 充值的游戏角色名
    order_id: 订单ID：500***为V币充值 100***为游戏充值
    channel_order_id: 支付方订单号
    order_type: 订单类型 1/2 充值游戏/充值V币
    pay_type: 支付类型 1/2 网银支付/V币支付
    user_pay_money: 用户网银支付扣款金额, 单位: 分
    user_pay_coin: 用户V币支付的扣除数量
    order_amount: 订单价值金额, 单位: 分
    receive_coin: 获得的虚拟币数量
    order_status: 订单状态 0/1  未完成/完成
    is_user_receive: 是否发放给用户
    ext: 透传参数 游戏方希望回调的参数
    充值订单表
    """
    __tablename__ = 'payment_pay'

    id = Column(Integer, primary_key=True, server_default=text("nextval('payment_pay_id_seq'::regclass)"))
    user_id = Column(Integer, nullable=False)
    game_id = Column(Integer, nullable=False, server_default=text("0"))  # 游戏ID, 充值V币game_id为0
    pay_type = Column(Integer)
    order_date = Column(Date, nullable=False, server_default=text("now()"))  # 订单日期
    order_time = Column(DateTime, nullable=False, server_default=text("now()"))  # 订单时间
    user_pay_money = Column(Integer, nullable=False, server_default=text("0"))  # 用户网银支付扣款金额, 单位: 分
    order_status = Column(Integer, nullable=False, server_default=text("1"))  # 订单状态 0/1  未完成/完成
    insert_time = Column(DateTime, default=datetime.datetime.now)

    @property
    def game_name(self):
        return GameGame.query.get(self.game_id).name

    @property
    def format_time(self):
        return self.order_time.strftime('%Y-%m-%d %H:%M:%S')

    @property
    def pay_type_display(self):
        a = {1:'支付宝',2:'微信',3:'平台币'}
        return a.get(self.pay_type)